使用node中fs模块创建和删除文件夹 |
您所在的位置:网站首页 › nodejs 删除文件夹 › 使用node中fs模块创建和删除文件夹 |
创建文件夹
假如我们要创建这样一个文件夹‘a/d/c/d/e’ 首先,我们必须先判断该文件是否为非空文件;如果是空文件就删除,如果不是空,那么先删除子文件,直到父级文件为空,再删父级文件。 同步删除文件夹 function removeDir(dir) { let files = fs.readdirSync(dir) for(var i=0;ipath.join(dir,file)); // a/b a/m files = files.map(file=>removePromise(file)); //这时候变成了promise Promise.all(files).then(function () { fs.rmdir(dir,resolve); }) }) }else { fs.unlink(dir,resolve) } }) }) } removePromise('a').then(function () { console.log('删除成功') }) 复制代码异步删除-深度优先遍历4->5->3->6->2->7->10->11->9->12->8->1 我们用代码来实现 let fs = require('fs'); let path = require('path'); function rmdir(dir,cb) { fs.readdir(dir,function (err, files) { next(0); function next(index) { if(index == files.length) return fs.rmdir(dir,cb); let newPath = path.join(dir,files[index]); console.log(newPath) fs.stat(newPath,function (err, stat) { if(err){ console.log(err); } if(stat.isDirectory()){ // 在这里完成深度优先,一层层往下找,直到找到非空文件夹 rmdir(newPath,()=>next(index+1)); }else { // 删除文件 fs.unlink(newPath,function (err) { if (err) { console.error(err); } next(index + 1); }); } }) } }) } rmdir('a',function () { console.log('删除成功') }); 复制代码异步删除-广度优先广度优先就是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止 上面的函数中大量使用到递归,如果对递归不太了解的话,理解起来会吃力一些。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |